WEBVTT 00:00.000 --> 00:13.720 This is Hacker Public Radio Episode 3,800 and 8 for Wednesday the 8th of March 2023. 00:13.720 --> 00:20.480 Today's show is entitled, Funkoela Social Platform to enjoy and share music. 00:20.480 --> 00:25.200 It is hosted by Ken Fallen and is about 61 minutes long. 00:25.200 --> 00:27.840 It carries a clean flag. 00:27.840 --> 00:39.920 The summary is, can interviews Kiron Ainsworth about Funkoela that lets you listen and share music? 00:39.920 --> 00:46.320 Hi everybody, my name is Ken Fallen and you're listening to another episode of Hacker Public Radio. 00:46.320 --> 00:52.720 Today we're going to have an interview, a chat that we met at the Boston, at the Boston 00:52.720 --> 00:58.160 C.S., I'm over to the HPR booth and we'd have a chat. 00:58.160 --> 01:00.800 Can you introduce yourself to me who you are and where you're from? 01:00.800 --> 01:09.840 Yes, my name is Kiron Ainsworth, I'm known online as Sparf and I am a technical writer from England, 01:09.840 --> 01:11.600 currently living in Berlin. 01:11.600 --> 01:15.440 Here in Irish ancestry there in the background somewhere. 01:15.440 --> 01:18.880 Yes, Irish ancestry and Welsh ancestry. 01:18.880 --> 01:21.840 Very good. 01:21.840 --> 01:23.840 That's a strong one, this one. 01:23.840 --> 01:26.160 Yes, very Celtic. 01:26.160 --> 01:31.920 A little bit of French in there somewhere as well, so, you know, and you're part of me like 01:31.920 --> 01:33.680 the English part, let's put it that way. 01:33.680 --> 01:35.680 No, no, no, let's go. 01:35.680 --> 01:37.680 You had no passport. 01:37.680 --> 01:47.680 No, no, unfortunately all too far out to get the European passport, that's why I moved here. 01:47.680 --> 01:51.760 There's two, sort of rejoin myself. 01:51.760 --> 01:55.040 Do you, you're in Germany now? 01:55.040 --> 01:57.440 Does that mean you can travel anywhere within Shengen? 01:57.440 --> 02:07.280 Yes, so I have a, I have a visa that basically enables me to travel freely in the EU and yes, 02:07.280 --> 02:14.320 Shengen, and my British passport does still obviously get me anywhere that isn't Europe, 02:14.320 --> 02:22.880 perfectly fine, so, yes, but it was important to me to get the sort of the visa so that my 02:22.880 --> 02:25.520 sort of travel within Europe was unrestricted. 02:25.520 --> 02:26.520 Unbelievable. 02:26.520 --> 02:32.560 And of course you can still travel to Ireland without anything movement area. 02:32.560 --> 02:39.040 Yeah, I mean, I think, I don't know about, I actually never looked into traveling to the 02:39.040 --> 02:43.600 Republic, but certainly on my British passport, of course, because I can just get into north and 02:43.600 --> 02:46.320 then travel down and there's never restrictions. 02:46.320 --> 02:50.720 Yeah, you don't even need a passport just like an energy bill or something. 02:50.720 --> 02:52.000 Yeah, exactly. 02:52.000 --> 02:53.000 Just weird. 02:53.000 --> 02:55.000 Make way, you know? 02:55.000 --> 02:56.000 Yes. 02:56.000 --> 02:57.000 And back. 02:57.000 --> 02:58.000 Yes. 02:58.000 --> 02:59.000 We've never left. 02:59.000 --> 03:00.000 Okay. 03:00.000 --> 03:07.720 So, you were, we were talking, actually, and you followed up with some suggestions. 03:07.720 --> 03:11.680 We were handed out leaflets for the pre-culture podcasting, and we were trying to gather 03:11.680 --> 03:19.840 for as many shows as possible that were released under the pre-culture license. 03:19.840 --> 03:24.080 And we followed, you recommended the USD now. 03:24.080 --> 03:25.080 Yes. 03:25.080 --> 03:26.080 Yeah. 03:26.080 --> 03:31.520 So, show I listened to a lot, I was a little bit surprised because I sort of, and friends with 03:31.520 --> 03:36.920 a few people from a few other podcasts on your network, such as a bugcast and Linux ads 03:36.920 --> 03:37.920 and things like that. 03:37.920 --> 03:43.080 And I listened to, but be asking now a lot, and I was like, oh, it's interesting that they 03:43.080 --> 03:50.320 aren't sort of represented, but then as long as it's a license issue, more than anything. 03:50.320 --> 03:51.320 Yep. 03:51.320 --> 03:59.160 And I actually due to, I already have picked them back in September when you were 03:59.160 --> 04:05.640 going to Boston, and I picked them again since, and it looks like they've agreed to 04:05.640 --> 04:12.320 release under a Creative Commons license, albeit a non-free one, but something's better 04:12.320 --> 04:13.920 than nothing I'm guessing. 04:13.920 --> 04:14.920 Hmm. 04:14.920 --> 04:15.920 Okay. 04:15.920 --> 04:16.920 Well, yeah. 04:16.920 --> 04:17.920 There we go, Nick. 04:17.920 --> 04:18.920 Some good game with athletes. 04:18.920 --> 04:19.920 Yeah. 04:19.920 --> 04:20.920 Exactly. 04:20.920 --> 04:21.920 Yeah. 04:21.920 --> 04:27.440 I did ask, you know, a non-culture one, like, could you know, up that, you know, what 04:27.440 --> 04:32.560 you're really going to be, are you really going to make so much money from the world? 04:32.560 --> 04:33.560 Yeah. 04:33.560 --> 04:36.400 Because anybody who's going to steal your stuff is going to steal your stuff, and yeah, 04:36.400 --> 04:37.400 good luck. 04:37.400 --> 04:44.560 And yeah, my team will crack lawyers on, and, yeah, international copyright case on 04:44.560 --> 04:47.120 onions, at any point, that's fine. 04:47.120 --> 04:50.200 It's very in keeping with BSD, though, isn't it? 04:50.200 --> 04:54.960 Like, obviously with Linux, the whole thing is, you know, if I released it freely, you've 04:54.960 --> 04:58.560 got a release of freely, whereas BSD, it's more I release it freely, do what you like. 04:58.560 --> 04:59.560 Yeah. 04:59.560 --> 05:01.080 I'm going to do commercial stuff, go for it. 05:01.080 --> 05:04.080 Yeah. 05:04.080 --> 05:07.840 But the BSD license, and I was given this example for the one person who didn't know 05:07.840 --> 05:13.240 the Creative Commons license, so familiar with the, you know, the BSD licenses on the MIT 05:13.240 --> 05:14.240 and the PPL. 05:14.240 --> 05:15.240 So, yeah. 05:15.240 --> 05:23.520 Well, I would have ranked, like, you've got the public domain stuff, is CC zero, and 05:23.520 --> 05:29.400 then CC, the CC just Creative Commons by would be a BSD license, I would have thought. 05:29.400 --> 05:36.040 So, you can do what you want, you, there's no requirement in you to, no, we're not preventing 05:36.040 --> 05:40.120 you from sharing it, we're not preventing you from reusing it, we're not preventing you from 05:40.120 --> 05:41.120 doing anything. 05:41.120 --> 05:45.120 The only thing is you have to be a BSD license, I would have thought. 05:45.120 --> 05:47.120 Yeah, I can say that. 05:47.120 --> 05:48.120 Okay. 05:48.120 --> 05:56.400 Yeah, I'm not, I'm leaving that directly from the Creative Commons website, so, well, 05:56.400 --> 06:01.320 it's, whatever, if, you know, they were previously releasing it under no license, it's all 06:01.320 --> 06:06.080 that just was copyright-all, and so, you know, anything is, like you say, anything's better 06:06.080 --> 06:11.480 than nothing, and yeah, it's just nice to be able to get in touch with people, it's encouraging 06:11.480 --> 06:13.480 that you can just get in touch with people. 06:13.480 --> 06:19.520 And it's clear that they did release it, but the very thing is a few people have come 06:19.520 --> 06:25.280 back to me, gone, no, you're wrong there, when I say, you know, if you don't release 06:25.280 --> 06:32.280 it under Creative Commons license by default, it's by default, copyright-all rights reserved, 06:32.280 --> 06:39.160 then it falls back to whatever website, the terms and conditions of the website that 06:39.160 --> 06:45.080 you download in the front, and a lot of people are saying, no, that's not correct, but definitely 06:45.080 --> 06:51.400 you can download and share, and that's all fine, and I'm going, I don't think so, but 06:51.400 --> 06:55.520 then again, I'm not an lawyer, so I'm trying to get follow up on that, but that's not 06:55.520 --> 06:59.080 why we're here, that's not why we're here, that's not why we're here, we're here, 06:59.080 --> 07:05.480 that's a funk whale, how many about funk whale, and why we're talking about this? 07:05.480 --> 07:13.280 Yeah, so, the funk whale is a project that I sort of work on outside of my job, it 07:13.280 --> 07:21.000 was started originally as a one-person project by Agapario back in 2015, and basically, 07:21.000 --> 07:26.800 it originally devised it as a self-hosted, free software alternative to brew shock, 07:26.800 --> 07:32.280 hence the name funk whale, it's a play on the title, sure, what's that? 07:32.280 --> 07:39.720 Oh, it was a sort of music streaming platform where you could build radios and playlists, 07:39.720 --> 07:44.440 and that kind of thing, I believe you just uploaded your content to it, like I don't think 07:44.440 --> 07:47.880 they hosted themselves, it was kind of just a toolkit for building things, although I'm 07:47.880 --> 07:54.280 not entirely sure because it was extinct by the time I came to look at it, but Wikipedia 07:54.280 --> 07:59.320 says, Wikipedia says, it was a word for this music streaming service, armed and operated 07:59.320 --> 08:03.960 by escape music, use of could upload it, load your files, be streamed and organized and 08:03.960 --> 08:04.960 playlists. 08:04.960 --> 08:10.080 That's exactly it, yeah, that's exactly what I thought it was, so that was originally 08:10.080 --> 08:15.600 the use case for funk whale as well, it was basically, it was a place that I got to upload 08:15.600 --> 08:21.200 her music onto her own server and play it back and organize it into playlists and all that 08:21.200 --> 08:23.320 lovely stuff. 08:23.320 --> 08:27.320 And over time other people picked it up and were sort of like, hey, this is neat, I like 08:27.320 --> 08:33.720 having this, you know, the ability to listen to music from wherever, and they started 08:33.720 --> 08:38.480 asking for more things like multiple users, not multi accounts, and then multiple libraries, 08:38.480 --> 08:43.600 per user, the ability to share music, and over time it kind of snowballed into the thing 08:43.600 --> 08:52.160 where eventually it basically gained activity pop support and became a federated platform, 08:52.160 --> 08:59.920 which is quite an interesting little challenge, because it works outside of like, you 08:59.920 --> 09:05.160 know, micro publishing, like micro blogging, which is, you know, activity pubs, bread and 09:05.160 --> 09:09.520 butter really, you start getting out into the, into the wild west of what activity 09:09.520 --> 09:14.320 pub can actually do. So, peer tube does video and cast-apot does podcasts and funcwell 09:14.320 --> 09:18.600 does music and we're all sort of there going, how do we make this work, how do we better 09:18.600 --> 09:20.600 write these things? 09:20.600 --> 09:24.800 And it's been, it's been a sort of a wild ride. 09:24.800 --> 09:31.920 I joined the project sort of back in 2018, at the time I had been using Spotify quite a 09:31.920 --> 09:37.760 lot, and weirdly enough, I think the reason I stopped using them was because they removed 09:37.760 --> 09:42.080 a V might be giants album that I had in my collection, like for some reason it wasn't 09:42.080 --> 09:47.200 accessible. I remember writing to the V might be giants on Tumblr and asking them, do you 09:47.200 --> 09:52.160 know why? This has gone, and John Lonell, and John Flansberg actually responded like, 09:52.160 --> 09:57.440 ah, it's not our thing, that's our, you know, that's our record label, we don't do that. 09:57.440 --> 10:04.080 It's so is that okay? And I kind of realized, well, I have this big CD collection, lots of MP3s, 10:04.080 --> 10:10.080 I should really just like host my own music. So I was learning Docker at the time, because I 10:10.080 --> 10:14.800 wanted to, I was doing it to Sys Admin work, and I'd recently started hosting MasterDum, 10:14.800 --> 10:21.120 and was looking for something to host music on. I came across all the sort of usual 10:21.120 --> 10:25.280 suggestions like your amp actually and things like that. And at the bottom of a random 10:25.280 --> 10:31.120 reddit thread, somebody said, hey, how about funcwell? It's, you know, activity 10:31.120 --> 10:34.160 pub driven, and it does all this stuff. And I was like, oh, that's great, because I'm running another 10:34.160 --> 10:39.040 activity above thing. I'm running a MasterDum, so great. So I went to try and install it, and I failed 10:39.040 --> 10:49.200 miserably. It just went poorly. So I went into the chat room, and I was like help, and I got 10:49.200 --> 10:53.520 actually picked up my case instead of talking to me and took me through the install process. 10:53.520 --> 10:58.640 Over time, I started helping other people, and then I basically said, well, you know, the reason 10:58.640 --> 11:02.880 is going so badly for everyone is because the documentation needs work, and I offered to go 11:02.880 --> 11:07.280 and do that. And then over time, I also started picking up, you know, front and bugs, and 11:07.280 --> 11:12.480 and eventually some even that API bugs and stuff like that. And kind of just worked my way into 11:12.480 --> 11:18.480 the project over time through sort of sheer contributions and things like that. And nowadays, 11:18.480 --> 11:24.720 I spend most of my time on documentation. So we said the last year sort of reworking everything, 11:24.720 --> 11:30.800 which includes a complete rewrite of the documentation from scratch. So it's been a sort of an 11:30.800 --> 11:37.840 interesting journey into the sort of open source field, considering I came from absolutely no 11:37.840 --> 11:43.360 technical background at all. It's been a quite a pleasant journey. I must say, the website here 11:44.160 --> 11:48.000 is, I shouldn't do this. I'm going to do an interviews, browser websites, and stuff like 11:48.000 --> 11:54.720 the bulbs of the project, but it is, it's very, very well, very clear. It looks, I just described 11:54.720 --> 12:04.960 it for our, um, our, uh, non, what's what we call the non-photon people, like, microads of the 12:04.960 --> 12:11.680 world who, uh, who has vision impairment. So the website to solve, is there just be in the website 12:11.680 --> 12:20.240 or can I, yeah. So what am I doing? I've got, um, my black paws. I'm hoping black will be supported. 12:20.960 --> 12:26.400 Black is on my, yeah. I put on my phone quilt server here in my house and I open up 12:26.400 --> 12:31.360 two ports of my firewall and I'm glad to build my can share my music when I'm in work. 12:31.360 --> 12:36.880 I said, yeah, yeah, yeah. Um, absolutely. So basically, there are, there are really two component 12:36.880 --> 12:41.760 parts to funquail. There's the API and there's the web app. Yeah. Most people, when they think of funquail, 12:41.760 --> 12:47.760 they think of the web app, but really, the API is the, is the thing. You know, it's the, yeah. Yeah. 12:47.760 --> 12:53.360 Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. I mean, it's, it's, um, basically something you can 12:53.360 --> 13:00.160 put on to a server, can run on anything from a Raspberry Pi up, and, um, you can store your music 13:00.160 --> 13:08.000 on there using either just a simple hard drive or a S3 compatible store and sort it into libraries. 13:08.000 --> 13:12.560 You can then share those libraries with other people, or you can make them public if it's sort of 13:12.560 --> 13:18.080 creative common, uh, creative common's audio or freely licensed audio. Yeah. Yeah. And you can even 13:18.080 --> 13:24.080 publish music or podcasts directly onto funquail, uh, which people can then follow like a master 13:24.080 --> 13:30.480 on account, like a channel as we call them. So you can be on MasterDone and you can follow a funquail 13:30.480 --> 13:35.920 channel and when somebody posts a new episode or a poster, you know, a new track, you will get back 13:35.920 --> 13:41.680 in your feed and you'll be able to listen to it. So yeah, it does, it does a few things. 13:42.720 --> 13:48.160 The project, if you're looking at the website right now, um, it's very different from, from what 13:48.160 --> 13:54.640 it once was. Um, this last year has been a lot of, uh, refactoring and sort of upgrading everything, 13:55.440 --> 14:01.280 including a complete rewrite of the, the web app and lots of clean up on the backend and, uh, 14:01.280 --> 14:06.800 York, who is our sort of technical maintainer, um, it is currently actually rewriting this website 14:06.800 --> 14:13.200 because it's, um, it's a bit of a heavy site. It's written in view, which is the same as the web app, 14:13.200 --> 14:19.440 both well. And, uh, we don't need that for a website. So it's currently just being rewritten as a 14:19.440 --> 14:25.440 nice, pretty static site, which was designed by our designer Mathew. Very good. So the website 14:25.440 --> 14:31.680 itself, looking at the screen shot of the application, you got my account setting, 14:31.680 --> 14:37.600 notifications, the logos, which I'd expect for our library favorites. Really this, and, uh, 14:37.600 --> 14:43.120 add on to, you know, fair enough. And administration, a few things there that you'd expect 14:43.120 --> 14:48.720 down in the bottom left on corner. We've got your technical algorithm, our album art with the 14:48.720 --> 14:55.360 heart sign, the name of this track album and artist and your play controls obviously somebody's playing. 14:56.000 --> 15:03.760 And in the main window, we've got, um, uh, on person I presume was logged in. 15:03.760 --> 15:13.040 Lee. Rose. That's an artist. Um, that's an artist. Okay. Yeah. They've got the 187 tracks and 28 albums. 15:13.760 --> 15:20.320 And then we got start video play all albums, search Wikipedia and embed on cool albums by artists, 15:20.320 --> 15:27.600 music inspired by them. We've got four different roles, four different albums available for me. 15:27.600 --> 15:32.320 Yeah. Uh, it's, it's an interesting experience looking at this screen shot because it's 15:32.320 --> 15:38.640 quite an old one. And a lot has actually changed, um, before like this, this last year of work. So 15:38.640 --> 15:43.760 the bottom left player is now basically a player bar along the bottom, which you can pop up with 15:43.760 --> 15:50.800 a full screen player, um, which is the album art and stuff like that. Um, the, uh, left hand side 15:50.800 --> 15:56.720 bar and lot has changed there. The queue is now a virtual queue inside the sort of, um, collapsed 15:56.720 --> 16:01.840 play bar. So a lot has changed since. And but, uh, a lot more is going to change in the future as well. 16:01.840 --> 16:06.560 So, um, you know, it's, it's a bit of a snapshot of history at this point in time. 16:06.560 --> 16:12.000 We're trying to update. Up at the top of got Rose albums, artists, reveals and playlists. 16:12.560 --> 16:17.760 But then just search my media there. Yeah. So there's a search bar in the top left corner, 16:18.320 --> 16:26.400 which basically performs a quick search, um, and will return results, matching albums, um, 16:26.400 --> 16:31.920 albums, artists and, uh, sort of tracks. Uh, but then there's a full screen search as well, 16:31.920 --> 16:37.680 which you can go into, um, to do a more sort of, uh, in-depth search on particular things like 16:37.680 --> 16:45.280 podcasts or, or albums or artists. All right. But what does this, I am, no intention of installing this, 16:45.280 --> 16:49.200 just by the way. That's funny. Thank you for coming forward to the next weekend, but I'm really good 16:49.200 --> 16:58.000 for the game. Um, uh, so it'll run on the Rose replying and I've got a lot of music, a lot of CDs 16:58.000 --> 17:03.840 that are on, uh, in black format, but the message is all over the shop. So what happens there? 17:04.800 --> 17:10.960 So, um, we back, we actually, let's, let's, let's go back. So I got a, what do I need to say? 17:10.960 --> 17:15.920 I've a Rose repie. I'm a one-turboid-harder with my music and all sorts of directories. 17:15.920 --> 17:24.800 So, um, if you want to, uh, basically leave all of that music kind of where it is, uh, you can do what's 17:24.800 --> 17:31.440 called in-place import. So, you can basically, as long as the, um, the directories visible to the 17:31.440 --> 17:38.080 server, you can basically say import in place. And all that does is, it says to Funquail, 17:38.960 --> 17:45.680 just take a note of where these tracks sit in the sort of file system. But move them, don't do anything 17:45.680 --> 17:50.320 with them, just reference them there. And then when I click play, that's where you access them. 17:50.320 --> 17:55.520 That's exactly. You can also do, yeah, you can also do like an import where you actually basically 17:55.520 --> 18:01.520 copy the files in from another place, um, or you can just drag and drop files from your local hard drive 18:01.520 --> 18:06.400 onto your server through the web interface and upload them that way. So depends where it is. But 18:06.400 --> 18:11.120 yes, you have options for in-place imports and things like that. Oh, uh, I'm going to be covered. 18:11.120 --> 18:18.560 Thanks a lot. Okay. Yes. As full as hacking. Thank you. It's a solid by the way. I do install it. 18:18.560 --> 18:23.760 Well, um, we've got a few ways to install. So, uh, the, the two sort of simplest ways are we have a 18:23.760 --> 18:29.200 quick install script where basically you run the script and you point it at a server and it goes 18:29.200 --> 18:34.240 and basically installs everything for you, assuming a sort of a Debbie and based server. Um, 18:34.240 --> 18:38.800 so it gives you some options. Like, do you want to install the reverse proxy? Do you want to, you know, 18:38.800 --> 18:43.760 set up all these different things and then it just installs the software for you? Um, 18:44.640 --> 18:50.720 the other way to do it is to run, uh, sort of a Docker compose, um, sort of set up, which is how I run it, 18:51.280 --> 18:58.640 um, which is just a very sort of straightforward. We ship a compose file. You basically just, 18:58.640 --> 19:04.160 um, you know, make the relevant directories and then run the compose file and, uh, it will create 19:04.160 --> 19:12.160 the relevant sort of Docker containers for you. Um, yeah, there are also, uh, a bit available for, 19:12.160 --> 19:17.040 so we, you can install it directly on Debbie and yourself. If you want to, um, you can also, 19:17.040 --> 19:23.680 somebody maintains a, uh, our installation instructions. There's why you know host or you know host, 19:24.240 --> 19:29.760 it's that sure fancy. Yep. Um, so there's a few different ways to install it. Okay. 19:29.760 --> 19:36.480 Oh, what's the underlying technology PHP or what? Um, it's VUJS. So that's our front turn framework. 19:36.480 --> 19:45.040 Um, it's a, it's basically a, uh, the JavaScript framework, um, for creating single page applications. 19:45.040 --> 19:52.160 So with funquail, um, you want certain things to remain on screen at all times. For example, 19:52.160 --> 19:57.360 the player, you don't want that to disappear when you sort of go to another page. So it's a single page 19:57.360 --> 20:02.400 application. It will reload the stuff that you ask it to and it will leave the stuff that's currently 20:02.400 --> 20:08.560 doing something in place. Um, and then on the back end, it's a Django rest framework. So that's 20:08.560 --> 20:15.360 Python based, the database that we sort of support is postgres SQL and postgres, uh, postgres, 20:15.360 --> 20:21.760 uh, postgres, uh, postgres, uh, I guess some people say to me, it's also cool. Um, I, I used to be a 20:21.760 --> 20:29.120 SQL administrator. I called it SQL this whole time. Uh, nobody told me. Um, and, um, yeah, it also 20:29.120 --> 20:35.120 uses redists for some, uh, caching and task management stuff, uh, specifically to do with federation. 20:35.120 --> 20:41.360 So, uh, to in order to sort of, um, process lots and different federation tasks, we have a queue 20:41.360 --> 20:46.240 set up by redists, which should then sort of, um, fires them off at the, uh, the API or 20:46.240 --> 20:51.120 fetches data from the database or something like that. Uh, so it allows you to keep running things 20:51.120 --> 20:57.760 smoothly while it deals with the ins and outs of a federated service. Oh, and that web 20:57.760 --> 21:09.120 such is you, yes, dot org, so Victor, uniform, echo, UDS, zero dot org, or G. Yeah, it's, it's a very popular, 21:09.120 --> 21:12.800 it's a very popular framework at the moment. And, uh, it's going from strength to strength 21:12.800 --> 21:20.080 with, uh, it's new sort of, um, newly rude sort of, uh, new sort of focus on the feet, which is a 21:20.080 --> 21:24.640 very fast sort of JavaScript compiler and things like that. Uh, they're really going from strength 21:24.640 --> 21:32.480 at the moment. And we recently, um, moved from view two, which was their previous sort of major 21:32.480 --> 21:40.880 release to view three, uh, and from JavaScript to TypeScript. Um, so, uh, basically Casper, who's one of 21:40.880 --> 21:48.000 our, um, uh, sort of, uh, contributors, developers, uh, took on that herculey and task pretty much 21:48.000 --> 21:55.840 single-handedly, um, and I don't envy him for it at all. It was, uh, a lot of work, like every single 21:55.840 --> 22:04.320 front end file had to be changed. Right. Oh, no, I have the, uh, of the thing installed, 22:04.320 --> 22:10.160 similarly, I go to a web page and create an account, uh, log it. Yeah, so during the in the 22:10.160 --> 22:15.200 install process, you will create a super user account that's done with a management script. So you 22:15.200 --> 22:22.480 create an admin account and when everything is set up, you can go to your, um, sort of web front 22:22.480 --> 22:28.720 end, so, though, in my case, I have two new key tunes. That's my, uh, my funcule server. And I could 22:28.720 --> 22:34.240 just log in and then basically I land on a, if it's a brand new, so you'll just land on a 22:34.240 --> 22:40.320 blank page with nothing and you'll be prompted to upload some content. Oh, and uh, you have three 22:40.320 --> 22:47.520 options for how you want to load content. Basically, you can upload things like your personal content, 22:47.520 --> 22:52.880 your CD collection or the stuff that's on your server. Uh, you can upload those into libraries 22:52.880 --> 22:59.760 and each library has sort of three possible, um, privacy settings. So there's sort of private, 22:59.760 --> 23:04.160 which means only you and people that you directly invite to see the content can actually listen, 23:05.200 --> 23:09.760 there's instance only or local, which means anyone who has an account on your 23:09.760 --> 23:14.880 instance can see it in play it. And then there is public, which means everyone everywhere, all 23:14.880 --> 23:21.280 the ones. Um, and so you can sort your music, depending on how you want to do it. So for example, 23:21.280 --> 23:27.200 I have a very big private library. I mean, it's very big by my standards, not gonna be you by 23:27.200 --> 23:35.200 your standards. But it's about 16,157 tracks. Um, and then I have a creative common library, 23:35.200 --> 23:40.800 which is about a thousand tracks. Um, and that one is public. So that everyone can listen to it, 23:40.800 --> 23:46.960 share it, have it on their hard, have it on my pod. Um, and then the private one, obviously, 23:46.960 --> 23:55.040 it's just for me and a couple of friends. So do you okay, that? Uh, I'm thinking of, um, this 23:55.040 --> 24:02.080 very practical things, they're actually because, um, by kids have got everybody's got their own 24:02.080 --> 24:10.720 taste and music and stuff. And my daughter now works. And she has a, um, the alternate 24:10.720 --> 24:19.760 switching spin here and been, uh, in the town where she works. Um, so I could have a library and then 24:19.760 --> 24:27.120 I have just a sign that library to her, but then she could. Yeah. So you can share it with her. Um, 24:27.120 --> 24:30.960 so you can, you can make the library and then you can basically, you get a sharing link with that 24:30.960 --> 24:37.040 library. Yeah. You can grant her access to it as a private library and then basically when she 24:37.040 --> 24:41.680 says, yes, I'd like access. You just prove that to make sure that everything is in order and then 24:41.680 --> 24:47.680 she's able to access everything. And that, I think a lot of where I'm going with this is, uh, 24:47.680 --> 24:52.400 you know, what will the FBI, I'm knocking on my door with a start using one quilt, which is 24:52.400 --> 24:59.840 um, probably, who could be our question. Um, yes. Yeah. Yeah. And I mean, uh, you know, obviously, 24:59.840 --> 25:06.240 don't publish and publicize music that you don't own the copyright to. Um, that's, that's kind of 25:06.240 --> 25:10.960 where this comes down to sharing content sharing music is something that, you know, people do and 25:10.960 --> 25:15.680 always have done. Most of my music actually comes from my dad. And so I share the library with him. 25:15.680 --> 25:21.840 Um, you know, so it's, it's, it's sort of private in that sense. We don't publish it. We don't 25:21.840 --> 25:30.240 broadcast it's play. Yeah. Um, and, you know, we, we promote people publishing music publicly. 25:30.960 --> 25:38.240 If using creative commons or, uh, Libra, I was it. And Lisa's are Lib licenses. Um, 25:39.280 --> 25:44.720 and that stuff can be published fine. But admins have controls that they can use to, uh, 25:44.720 --> 25:50.320 you know, take, take content down. You can report it. You can make sure that the moderators know 25:50.320 --> 25:56.160 about it. And, uh, it's really the responsibility of the individual admin to do that. We are hoping 25:56.160 --> 26:03.200 to introduce better controls. So, for example, ensuring that only creative commons license media 26:03.200 --> 26:07.600 or freely licensed media can be made public in the first place is something we quite like to do. 26:08.320 --> 26:12.720 Uh, it's just not there yet. Um, but it is something we're doing. 26:12.720 --> 26:17.280 I know. It's a good start. I have a care separation, but common stuff and, uh, 26:17.280 --> 26:22.800 stuff like previously, uh, was collected. Yeah. I mean, it's not. Yeah. It's, it's one of 26:22.800 --> 26:28.800 those things where, you know, collection management is a hugely complex topic. And, uh, this, 26:28.800 --> 26:32.800 this sort of way that we've done it, which is having these kind of, you know, you're able to create 26:32.800 --> 26:37.120 as many libraries as you want. But they're all locked to those three privacy levels. And 26:37.120 --> 26:44.320 everything in that library is at that privacy level. So, you can't have, um, you know, 26:44.320 --> 26:48.960 if you start uploading and you upload to a certain library, um, you upload 80 tracks and then you 26:48.960 --> 26:53.520 think, oh, actually, I wanted this one to be public. It's not particularly easy to move that, 26:53.520 --> 26:57.760 which is something we're trying to address in, in sort of later updates where we're moving to a 26:57.760 --> 27:04.160 collections based, uh, sort of way of handling things, where everything can just be dropped onto 27:04.160 --> 27:08.720 your funquail. It doesn't need to go into a library. It just kind of gets, you know, it's part of 27:08.720 --> 27:13.520 your library. But then you can create collections. And those can be as generic or as specialised 27:13.520 --> 27:20.000 as you want. Um, and you can, you know, basically share individual tracks with people or you 27:20.000 --> 27:24.640 can share like whole content collections. Whatever you want to do. So we've got big plans to have 27:24.640 --> 27:29.280 to manage that because at the moment, that's something that people, you know, are really sort of 27:29.280 --> 27:36.480 aching for is this, uh, really solid, um, you know, music management. Uh, when I'm importing 27:36.480 --> 27:42.880 this, is there an option to, you know, correct the metadata anyway? So currently no, uh, but it 27:42.880 --> 27:49.680 is something we'd like to do. Um, basically what we suggest is we back onto music brains per card, 27:49.680 --> 27:57.440 or music brains rather the, um, database for music. And so we suggest music gets tied with the card. 27:57.440 --> 28:04.560 Now, that's fine for, you know, some content, you know, that you're uploading from CD collection 28:04.560 --> 28:10.080 from your server or whatever. Um, but it's a bit of an upfront load. We do have a minimum amount 28:10.080 --> 28:16.160 of metadata that is required. I'd like to have some way of, I think, in app so that you don't 28:16.160 --> 28:21.600 have to go, oh, no, it failed. Uh, I have to go and tag it with the card and then come back and try it again. 28:21.600 --> 28:27.680 Um, but, you know, that's something we're sort of trying to work out the moment we're actually 28:27.680 --> 28:33.040 working with the meta brains team to figure out a good way to do that. So of course, some people 28:33.040 --> 28:38.240 don't want to use music brains at all. So we have to have, um, you know, four backs for other 28:38.240 --> 28:45.840 tagging systems and supporting the sort of bare minimum of ID free tagging. Um, so at the moment, 28:45.840 --> 28:49.600 it's kind of a two step process. You type the music first, then you upload it to Funkwell. If it's 28:49.600 --> 28:53.600 got a bit, if it's got a music brains ID, you're going to have a great time. If you type it, 28:53.600 --> 28:59.760 then, you know, it's say it can be a little bit hits on this, um, because it was just never 28:59.760 --> 29:05.520 really designed to do anything but. So I also see that you have loads of science for various 29:05.520 --> 29:13.600 platforms, uh, Android, iOS, etc. Yeah, I'm so keen, actually. Yeah, and, and this is because 29:13.600 --> 29:27.040 basically, um, Oh, so Aldi and HTTP, di or FS use FS utility. Hmm, yeah, so in terms of actual 29:27.040 --> 29:35.200 official Funkwell, um, sort of apps, you basically have obviously the web app. We have an official 29:35.200 --> 29:42.800 mobile client for Android, um, Funkwell for Android, and, um, we have a mob ade plugin. So Mob Adie, 29:42.800 --> 29:50.080 if you don't know is the is a sort of music to Python-based command line music server and you 29:50.080 --> 29:54.320 can plug directly into a funcwell server from that if you prefer to listen to music using a command 29:54.320 --> 30:05.600 line client. But the majority of these actually are using subsonic. So funcwell supports subset of the 30:05.600 --> 30:11.840 subsonic API. You can use your existing subsonic apps to listen to your music collection offer 30:11.840 --> 30:17.360 a funcwell. Our for example if you're on a iOS device we don't have an app earlier at the moment 30:17.360 --> 30:25.200 I'm a funcwell. Sorry I say this I'm an iOS user myself so but you know if you have a subsonic app 30:25.200 --> 30:33.680 you can listen through that which is kind of our stopgap solution to Intel people you know support 30:33.680 --> 30:39.920 the funcwell API in their acts directly. Very cool. The one is the I can understand have an 30:39.920 --> 30:48.240 media library and whatever. Why would I want to publish this on the Fediverse? 30:49.440 --> 30:54.960 So in terms of publishing your music on the Fediverse this is a probably a me thing and 30:55.600 --> 31:02.320 not a you. Yeah it's an interesting question though because it was one of those things where it was like 31:03.440 --> 31:09.760 how do we you know we got Fediverse support around 0.17 was the release I think when we started 31:09.760 --> 31:15.760 to support activity program we started to support Federation and mostly this was kind of for 31:15.760 --> 31:20.800 into funcwell communications so sharing libraries and those kinds of things it didn't really use 31:20.800 --> 31:27.200 activity bubble that much it was more about you know funcwell to funcwell API or sort of navigation 31:28.160 --> 31:37.200 but what we decided quite early on one of our big goals was to be a place for podcasts 31:37.200 --> 31:44.480 because at the time podcasters were asking for publishing on the Fediverse they wanted to be able 31:44.480 --> 31:50.960 to have a podcast that you could subscribe to using the normal mechanisms of RSS but also you could 31:50.960 --> 31:56.960 follow it like a masterdog account and see the new episodes and things like that so it became this 31:56.960 --> 32:03.360 big kind of R&D effort by Agat and some more people on our sort of team to talk to podcasters 32:03.360 --> 32:09.760 and figure out exactly they needed from this how we could build that and obviously being a music 32:09.760 --> 32:15.200 shop we also decided this was a good thing for artists if you're an artist who publishes their work 32:15.200 --> 32:22.240 currently on things like Soundcloud funcwell is a you know free and open alternative for you 32:22.240 --> 32:27.520 but people can follow your work and interact with it in some way and play it on their pod 32:27.520 --> 32:37.200 you know whatever so the idea is how it works is that if I follow an artist a channel on my funcwell 32:37.200 --> 32:42.880 pod they publish a new sort of track on their pod it immediately shows up in my pod my 32:42.880 --> 32:48.880 constrie that so yeah so I don't know if that was clear but that's kind of how it works 32:48.880 --> 32:55.280 if you have a library of content on your pod or a channel where you upload something I can follow 32:55.280 --> 33:02.640 it on my pod which is what we call servers and it basically shows me all of that content in my 33:02.640 --> 33:09.360 pod when I then click play it goes to your server and says hey I'm playing this now I would like 33:09.360 --> 33:15.280 to stream the data from there and basically that's what it does it streams from wherever you've 33:15.280 --> 33:23.520 stored it and cashes it on your local server for later use so if I play an album like for example 33:23.520 --> 33:29.760 you have an album by Robin Gray on your server I'm following that library I play that album 33:29.760 --> 33:34.960 it will stream it to my server cash or the content in case I listen to it again later 33:34.960 --> 33:40.800 and that's how it all sort of pulls together so it's about creating this interconnected network 33:40.800 --> 33:49.600 of people publishing basically freely licensed content right now I'm suddenly interested in this 33:49.600 --> 33:56.560 yeah I know as a way to discover new music you basically follow other people who are 33:56.560 --> 34:06.880 are a porting music shows yeah absolutely they've broadcasts and yeah so they published 34:06.880 --> 34:13.680 the it's facts that they have then I could follow them and the people they follow etc etc 34:13.680 --> 34:19.600 these are good like they could create like for example because they get a lot of music from 34:19.600 --> 34:26.000 like jemendo for example there's no reason that you couldn't have a quote channel where he 34:26.000 --> 34:31.520 basically pushes the content that they play and you know it could be like an album called 34:31.520 --> 34:37.120 you know the name of the week of the episode and you can go back and listen to all the tracks 34:37.120 --> 34:43.600 they'd like that and that will be a use case for it a better use case there will be to follow through 34:43.600 --> 34:49.520 and those artists follow those artists themselves so that you know it like one song but yeah 34:49.520 --> 34:56.240 I want to follow the entire the entire work that's kind of where playlists come into it and 34:57.040 --> 35:02.800 that's something that so we do playlists playlists are a thing and we are currently in the process 35:02.800 --> 35:07.680 of trying to expand those to be federated as well because currently playlists are kind of locked 35:07.680 --> 35:15.680 to a specific funcwell instance but I'm locking the ability to actually follow playlists and 35:15.680 --> 35:19.600 interact with them build them across people like that sort of thing with is one of the one of 35:19.600 --> 35:25.760 the goals really okay is that's that's a that's a big use case and it's one of those things 35:25.760 --> 35:35.040 don't currently end it on matter to follow each podcast similar to yeah the artists in order to 35:35.040 --> 35:43.680 basically I'm asking how do I find you artistry and how do I so yeah so content so content that is 35:45.120 --> 35:49.680 so you're on a pod like mine for example I've got several hundred users not many of them 35:49.680 --> 35:56.480 are active but you know there's some there and basically when somebody who has an account on the same 35:56.480 --> 36:02.640 server that you do follows a channel for example that shows up on your home screen so if they start 36:02.640 --> 36:08.160 following a you know a musician and that channel appears for them it also shows up for you 36:08.800 --> 36:14.240 all of that content shows up and you could search for it and you can filter by like you know 36:14.240 --> 36:18.160 let's say you start a radio and you're like I don't really care I just want something that's tagged 36:18.160 --> 36:25.360 with heavy metal yeah any content that is known to your pod and is known by followers by by people 36:25.360 --> 36:31.280 on your pod and people they follow that is accessible to you will start playing basically and you can 36:31.280 --> 36:36.640 discover new music like that you'll pull in some tracks that you've never heard from you know somebody 36:36.640 --> 36:42.400 follow someone random from open to audio and they happen to be making metal music right that's 36:42.400 --> 36:47.040 now accessible to you so you're here in that radio and you can like it and you can follow them 36:47.040 --> 36:53.680 yourself and you can you know sort of get involved with that sort of thing and the more people sort of 36:53.680 --> 37:00.560 follow obviously it's very similar to master done in this way if it's a single person pod it's very 37:00.560 --> 37:07.520 lonely it's it's entirely usable you can upload your music content you all the features that's great 37:07.520 --> 37:13.120 but discovery wise not much it gets better when you have more people on the pod and they start 37:13.120 --> 37:17.680 following people from across funcwell all the different funcwell pods they go over and they go hey 37:18.320 --> 37:24.000 funcwell.uk has this really cool artist or podcaster who's making something cool I'm going to 37:24.000 --> 37:30.080 follow them and then you being on my pod tonic you choose you see all of that content appear 37:30.800 --> 37:36.800 and you can just start listening so that that's actually um that that pushes me away from the 37:36.800 --> 37:44.160 idea of having my own server yes in terms of yes for the for the use case of internally but my 37:44.160 --> 37:50.400 creative commons music would probably be better off on somebody else's server yeah I mean it comes 37:50.400 --> 37:56.640 down to who is going to offer you an account space yeah because you have a lot of flack files 37:56.640 --> 38:03.200 and they quite they're quite big the reason to hold your own server more than anything is to you know 38:03.200 --> 38:08.640 have as much space to do with as you will yeah and obviously the more servers you have in the 38:08.640 --> 38:15.680 Fediverse the better it is for everyone yeah so I would as a member of the project I would encourage you 38:15.680 --> 38:23.120 to set up your own server yes as a as a as a as a person who also sort of you know got their 38:23.120 --> 38:30.080 starts with funcwell using someone else's pod originally so I used open.od which is the kind of flagship 38:30.080 --> 38:38.720 pod um I can see the the sort of use in it but you can quickly start populating your your server so 38:38.720 --> 38:46.400 open.odio um offers the entire free music catalogue from archive.org as a library that you can 38:46.400 --> 38:52.240 follow so you can immediately populate that in your pod by just following that library and there's 38:52.240 --> 38:57.200 a few libraries like that mine mine is one of them so I have lots of music like the fireworks 38:57.200 --> 39:02.160 of Jonathan Colton and stuff like that because that's all creative commons um you can just follow that 39:02.160 --> 39:07.440 and you get a lot of content that you might never have even heard of and uh I buy a lot of creative 39:07.440 --> 39:14.720 commons music to you know give people more content to listen to but the love spread the love yeah 39:14.720 --> 39:20.400 and spread the money to people who you know are making creative commons music because I think 39:20.400 --> 39:28.720 it's an awful thing yeah I've been exclusively listening to creative commons music since 39:29.440 --> 39:38.320 last seven years I get oh wow no that's that's not I not like I put on my headphones and 39:38.320 --> 39:45.520 and don't listen to any other music but I mean any music so I am interested in getting 39:45.520 --> 39:52.480 access to better creative commons music because I've healed up the innovation together no you 39:52.480 --> 39:59.200 you know in every town there's the cool bar where you go in and they've got the bands 39:59.200 --> 40:04.880 thing and some nights it's good and some nights it's not but the nights it's the night it's 40:04.880 --> 40:11.200 good very good and that's yeah I feel we get with creative commons that spiritual you know 40:11.200 --> 40:16.080 it's a role for all the ages all the some good stuff out there absolutely like there are some 40:16.080 --> 40:21.760 really fantastic artists I've come across um who some of them I came across because they're creative 40:21.760 --> 40:25.760 commons some of them I came across and they happened to be creative commons so you've heard 40:25.760 --> 40:29.200 you listen to the bugcast I don't know if you heard the tracks by like solar ference 40:30.240 --> 40:33.920 and the blasting company that were playing a couple of weeks ago but those were my suggestions 40:35.520 --> 40:40.320 and they are bands that I so solar ference I saw live in Exeter when I was living there 40:40.320 --> 40:44.080 and it just happens to be that they release everything under creative commons and the blasting 40:44.080 --> 40:49.360 company are well known for being the band behind the soundtrack to over the garden wall which is 40:49.360 --> 40:53.520 a very famous mini-series and cards we network and they release everything under creative commons 40:53.520 --> 40:59.120 and it's just it's wonderful sometimes you come across these bands and they're like wow I didn't 40:59.120 --> 41:05.520 realize that you know they would do that Jonathan Colton another one who's like a long time 41:05.520 --> 41:10.160 favorite of mine and I didn't realize he really used everything under creative commons but that 41:10.160 --> 41:15.120 into it I'm the opposite I got into it because he released everything and it moved to Colton 41:16.320 --> 41:21.680 where did I get him? I just got into him because he did the music or he did some of the songs 41:21.680 --> 41:26.880 for portal and portal too yeah yeah and so I thought I think that's where I heard of him 41:26.880 --> 41:32.800 and then I started listening to his thing a week and he also draws a lot with he also 41:32.800 --> 41:38.720 tors a lot with they might be joined to on my favorite band of all time so I kind of fell into 41:38.720 --> 41:44.320 him that way and then realized later I'm like oh he's an entire collection it's like you know 41:44.320 --> 41:50.800 yeah just I'm trying to credit credit based and you know so I bought the whole thing I bought 41:50.800 --> 41:57.120 every single track album anything he's ever done and I put it all on funquail for people to listen 41:57.120 --> 42:05.280 to and hopefully go to do the life of themselves you know fantastic okay now right security issues 42:05.280 --> 42:11.440 about doing this I mean there's they there are some risks with this you put them the wrong library 42:11.440 --> 42:19.280 and suddenly the metallic air are coming I'm not going to go or I want my music back 42:19.280 --> 42:28.320 yes and that's the band with course and then there's the the priority implications of having 42:29.200 --> 42:35.840 a server just open to the world out there talk to me about this so I mean security features 42:35.840 --> 42:40.880 why I'm not exactly the best person to talk about because I'm not a programmer but I can sort 42:40.880 --> 42:46.880 of take you through some of the stuff that we've done so one of the first things is going to this 42:46.880 --> 42:54.080 point about sort of content being uploaded that shouldn't be uploaded um this is a risk with any 42:54.880 --> 43:01.040 sort of service where people can upload their own content if you're having you know if you have a 43:01.040 --> 43:06.880 service where anyone can upload anything in theory you're going to get a lot of copyrights work 43:06.880 --> 43:15.920 the important thing is giving people the ability to to basically report that to a moderator 43:15.920 --> 43:23.920 and then giving a moderator the tools to handle that so in funquerals case we we have a report 43:23.920 --> 43:29.280 option on everything you can report users you can report libraries you can report artists albums 43:29.280 --> 43:37.280 tracks whatever and this sends basically a notification to the um to the admin or the model to team 43:37.280 --> 43:42.880 of the pod and basically says so this has been flagged as copyrighted it can go in and verify 43:42.880 --> 43:47.440 yes that is copyrighted it shouldn't be public and then they can choose how to deal with that 43:47.440 --> 43:53.120 whether that be to make the content private or if it's a repeat offence or something like that 43:53.120 --> 43:59.840 to basically remove the content and ban the account um so you know we you know we we try to 43:59.840 --> 44:07.760 try to make the DCM a little bit of the copyrighted yeah exactly and we're we're like us 44:07.760 --> 44:12.640 trying to to make it even easier so we've been floating around this idea of saying like giving 44:12.640 --> 44:19.760 admins the ability to lock down like can users create public libraries at all or giving them 44:19.760 --> 44:24.960 a mechanism that says if something gets put in a public library it checks to see does it have a 44:24.960 --> 44:33.760 license that is freely available and if not basically no you can't put it in there so we have some 44:33.760 --> 44:37.920 thoughts on that it's you know it's something that's kind of been in the background minds that 44:37.920 --> 44:44.400 this past year has been a sort of a learning experience with a busy it's a it's a new team 44:44.400 --> 44:50.960 who basically took over the the old sort of the previous developer sort of left the project 44:50.960 --> 44:58.960 and we took over and we've basically been trying to learn the ropes um to security so um we 44:58.960 --> 45:04.400 had security audits and and we will have another security audit uh soon because basically we 45:04.400 --> 45:12.080 funding from an element uh and yeah uh we're sort of talking with then at the moment to uh to get 45:12.080 --> 45:19.600 another fun uh nervousness uh round of funding from them and basically they offer a security audit 45:19.600 --> 45:25.440 it's a pretty sort of standard security audit it mostly tests like the front facing web app 45:25.440 --> 45:31.280 uh for security issues and but it's a good it's a good thing to do just to make sure you 45:31.280 --> 45:36.560 catch some of those more obvious ones yeah the major problems that you will have on any app like 45:36.560 --> 45:45.040 this are things like um access control for the API and um you know basically port maintenance and 45:45.040 --> 45:51.120 management so we have you know everything is developed in the open our Docker files are pretty 45:51.120 --> 45:58.080 well sort of uh sort of shown and we use fairly standard ports for everything um we don't we don't 45:58.080 --> 46:03.440 use that many sort of non standard ports we document which ones need to be open in order things 46:03.440 --> 46:13.120 to work um and for things like subsonic which is a you know uh a slightly older API which is a 46:13.120 --> 46:18.240 little bit sort of uh it's a bit of an add-on and that sort of stuff is disabled by default so 46:18.240 --> 46:23.440 basically the admin has to opt into pretty much everything that would expose them to any greater risk 46:23.840 --> 46:28.000 and the expectation there is that they will assess that risk for themselves and make sure that 46:28.000 --> 46:34.000 it works with them uh similarly our engine x-config files um we've actually taken a step to hard 46:34.000 --> 46:40.000 and those uh one of the things we've done in this latest releases um basically package those into 46:40.000 --> 46:47.040 uh into the Docker containers uh so if you're running it on Docker basically you have a uh 46:47.040 --> 46:52.560 uh sort of a s- what we would call like a sort of a sensible default you can override it if you 46:52.560 --> 46:56.880 want to like we give you a mechanism to override it but the point is we don't want to to end up 46:56.880 --> 47:02.160 where you have an updated your Docker your uh engine x-files and ages and you know you've just 47:02.160 --> 47:08.560 kept updating the software but not the engine x-files so we've sort of put that as part of our new uh 47:08.560 --> 47:13.840 yeah update mechanism to try and make sure that we're shipping security updates uh as sort of 47:13.840 --> 47:19.840 well as we can um but yeah so we do take we do sort of take care and we've actually had some 47:19.840 --> 47:25.840 really excellent contributions uh recently that hard and up security of these sort of infrastructure 47:25.840 --> 47:32.800 itself um and with version two of our API which is something we're developing at the moment 47:32.800 --> 47:39.840 uh security is going to be sort of a big uh a big thing that we'd really look into so we really 47:39.840 --> 47:44.320 want to get into the mode of speccing everything to it in an inch of its life making sure that we've 47:44.320 --> 47:52.320 really assessed the uh access control requirements and the um behaviour frankly at the end points 47:52.320 --> 47:58.160 to ensure that they only do what we expect them to do and uh obviously this will all be developed 47:58.160 --> 48:02.480 in the open every single spec gets put up a discussion in a forum where people can go and 48:02.480 --> 48:09.840 talk about it um but you know we we will always do what we reasonably can i know the 48:09.840 --> 48:16.880 Georg for example who's like say they're sort of uh main technical resource um he works in a sort of 48:16.880 --> 48:23.120 a company which deals with Kubernetes and large scale deployment so he's pretty obey with security 48:23.120 --> 48:30.560 and has been doing a lot of work to try and solidify that for us um so yeah it's a it's a 48:30.560 --> 48:35.280 challenge like anything like you say anything on the internet anything that's federated 48:35.280 --> 48:41.520 the other thing that you know you need to touch on is um things like uh abusive content like 48:41.520 --> 48:48.880 what happens if something are you're on your uh you're on your server for example follows a uh 48:48.880 --> 48:56.640 a podcast that advocates or you know nancyism well how do you deal with that so we implement 48:56.640 --> 49:01.280 a loudlisting and denialisting but you can put your server into a loudlist mode where only 49:01.280 --> 49:05.520 specific pods that you allow through will get in uh same with denialist you can say that one 49:05.520 --> 49:11.760 in particular can't come in um you can purge content from different domains so if there's a 49:11.760 --> 49:18.720 domain that's particularly sort of questionable you can basically say based you know block that domain 49:18.720 --> 49:24.160 and purge everything it's ever sent to me I don't want to know anymore so we have a lot of uh 49:24.160 --> 49:31.120 sort of tools that admins to handle all of that sort of stuff um and importantly as well uh 49:31.120 --> 49:37.440 users in the meantime after they've reported something can also hide all content from artists 49:38.320 --> 49:43.440 or from from podcasts and basically say I really don't want to see that so while the admin is 49:43.440 --> 49:51.200 dealing with my report yeah I get yeah don't see anymore so we're trying like we had a lot of 49:51.200 --> 49:56.720 help on anti abuse uh with uh so we had Jenny who was working on anti abuse back in the day 49:57.520 --> 50:04.720 and uh she did a lot of a lot of work sort of um as making it better than it was 50:04.720 --> 50:09.920 as shall we say but it's not going it's not going back on all of the things that we haven't considered 50:09.920 --> 50:15.600 so we just had to get out of searching and working I realised we probably up on an hour here 50:15.600 --> 50:22.800 which I mean the above we were just having for 10 minutes in the company what sort of license 50:22.800 --> 50:27.760 your solvers released on there yeah so I would admit as if you say now it's a totally 50:27.760 --> 50:35.600 prepared open core license uh no we're pretty we're pretty against that now um the sufferers 50:35.600 --> 50:42.400 uh a gplv3 so that's the afro very general public license it's the only license really I think 50:42.400 --> 50:50.160 the make sense for hosted server side software um it's you know it's an excellent license it 50:50.160 --> 50:55.200 gives us all the freedom that we want and it gives our users the them as well and we've had 50:55.200 --> 51:00.320 people come up and say we were we'd like to fork the software to put it on the block chain and do 51:00.320 --> 51:06.960 all this stuff and we're like well good luck you can have it free and open the winner and nothing 51:06.960 --> 51:18.800 to do if you block chain is coming near us yeah people people have this thing in their head 51:18.800 --> 51:25.520 that like they think that funquels goal is to dodge copyright and they're like well if we put 51:25.520 --> 51:29.600 it on the block chain and we had like a doubt that sort of did everything and we put everything 51:29.600 --> 51:35.040 in IPFS there would be no central authority to take down content and well there's a 51:35.040 --> 51:41.680 and we're just like we don't hate copyright I don't understand where this uh where this concept 51:41.680 --> 51:45.680 comes from we we for some reason hate copyright we love copyright copyrights fantastic 51:46.480 --> 51:54.880 we just prefer open uh licensing that's about it you know yeah I question that is copyright 51:54.880 --> 52:00.240 yeah fantastic but in the in the form that there's we wouldn't need to create well 52:00.240 --> 52:06.560 licensing it copyright wasn't broken but okay well yes but the idea that somebody should be able 52:06.560 --> 52:12.400 to copyright their work and not have that copyright violated say for example an individual 52:12.400 --> 52:17.600 creates a piece of music and wants to have it you know sort of they want to shift it 52:17.600 --> 52:22.240 a certain way they don't do creative comments or whatever that's their right and we should decide 52:22.240 --> 52:31.760 not necessarily think that that's correct as you know if I go out and I go to work 52:31.760 --> 52:36.320 and I work kind of project and I create some beauty there I get a bit first thank you very much 52:36.320 --> 52:46.000 that's it you know copyright is essentially monopoly that we the state grant and I think 52:46.000 --> 52:51.840 yeah maybe it's it's a way but there's also there could be other ways because the show 52:51.840 --> 52:58.400 right is is done you're reluctant to it no it's kind of a question over a point yeah 52:58.400 --> 53:04.480 yeah I agree that it's it's not funquels uh not funquels position to question that 53:04.480 --> 53:10.880 um and more to the point it's it's our position to you know like I say promote releasing 53:10.880 --> 53:16.560 your like your content freely like when you upload content we say hey who's a license you know 53:16.560 --> 53:20.240 this is great and if you publish come to an on funquel it's going to be public so you should 53:20.240 --> 53:27.120 put a license on it but like yeah the you know if you don't want to do that for whatever reason 53:28.080 --> 53:31.920 we we're not going to make a technical solution that gets around there by putting it on the 53:31.920 --> 53:38.320 onto the blockchain for everyone to see you can never take it down like no oh but it's a whole thing 53:38.320 --> 53:44.480 that we just don't I want to get into yeah absolutely absolutely this is ex of 53:44.480 --> 53:49.520 this ex of uh the only thing that I don't really want to be running is another service yeah I 53:49.520 --> 53:55.600 understand that um if you want to get a taste yeah if you want to get a taste you know this 53:55.600 --> 54:02.720 wasn't on the you know the pub that who house you know my house won't spreading outside the house 54:02.720 --> 54:08.800 and sorry if I'm talking over you it's because of latency and mumble so my apologies but no 54:08.800 --> 54:15.840 no no no but yeah if you want to try out funquel there are publicly accessible pods so if you go 54:15.840 --> 54:21.040 to our website there is a pod picker which actually shows you pods that you can sign up to 54:22.560 --> 54:28.080 the important thing to look out for is what's the upload limit because obviously storage isn't 54:28.080 --> 54:33.840 free it's you know that's the the big sort of limiting factor for people who host content public 54:33.840 --> 54:42.080 birds and a pub obviously so I offer on my pod I offer like 10 gigabytes which is one of the 54:42.080 --> 54:48.960 more generous offerings out there not trying to sell it because of you know it's it's something 54:48.960 --> 54:55.920 I pay for our pocket but you know some admins offer two gigabytes some offer 15 it really depends 54:55.920 --> 55:00.800 on what you want but if you try it out like if you go to open.ordio and sign up for an account 55:00.800 --> 55:06.240 there and just test the software out see how you like it maybe you think to yourself yes I 55:06.240 --> 55:12.240 actually do want to run this on a server and particularly if I'm running it I might want 55:12.240 --> 55:19.440 internet for a while just to get a feel for it is it's impossible to like replicate the data so 55:19.440 --> 55:27.680 that you know you have different time zones that's or would that would that be just better 55:27.680 --> 55:35.280 replicating the data underlying is there a way to like have a decentralized big copies of the same 55:35.280 --> 55:44.960 server serving different regions of the planet that's a question beyond me but in theory I mean 55:44.960 --> 55:51.760 in theory there would be you know this is that you're talking about scaling sort of solutions here 55:51.760 --> 55:59.120 and theory you would double to you know run several instances of you know certainly the web 55:59.120 --> 56:04.800 app is easy enough plug into the same API in theory you'd be able to do load balancing with the API 56:04.800 --> 56:11.440 and you'd be able to do sort of redundancy due duplication with the database it's not something 56:11.440 --> 56:19.200 that we currently uh document or really sort of offers support for yeah it's one of those things 56:19.200 --> 56:25.280 where somebody has written up a helm chart for running funcwelling Kubernetes and hats off to them 56:25.280 --> 56:33.920 I mean that's uh in my opinion a little bit overkill but there we go yeah but the thing about this 56:33.920 --> 56:40.960 is the easiest way to would be to basically post multiple instances of funcwell and just follow 56:40.960 --> 56:46.960 the content libraries because they will all show up the the different sort of service if you have 56:46.960 --> 56:53.760 three servers which is kind of the the lead server and has all of the data on it just follow 56:53.760 --> 56:59.520 that content from the other two servers it'll show up and you can play it you know it's it's kind of 56:59.520 --> 57:10.560 how it does it functions but I'm going to randomly like without uploading stuff can you randomly 57:10.560 --> 57:17.680 listen to other people's pods without having on account so the admin can choose to allow 57:17.680 --> 57:24.560 public unauthenticated content so if you go to for example my part to new kitchens and you want 57:24.560 --> 57:31.200 to listen to Jonathan Colton you can but you don't have to have account um basically it's 57:32.080 --> 57:38.080 free in public and I have turned off um basically requirement for authentication on 57:39.200 --> 57:45.040 certain endpoints so obviously anything to do with accounts to do with uploads to do with anything 57:45.040 --> 57:50.560 like that that's all protected but listening and stuff like that is open that's down to the 57:50.560 --> 57:56.240 administrators to decide obviously as there's a performance cost there there's a you're just going to 57:56.240 --> 58:01.600 be a person but they're obviously you have yeah well I mean it's it's covered in my my digital 58:01.600 --> 58:10.000 lotion bill so I can just read it after a month goes by and cry but I'm an aggressive 58:10.000 --> 58:19.360 sort of compressor I um and I upload all of my content as opus files which retain very very high quality 58:20.400 --> 58:27.280 despite being tiny tiny um so I try to keep it down that way but obviously other people can upload 58:27.280 --> 58:32.960 stuff publicly they can upload flag files, wad files you know a LAC files or whatever they call 58:32.960 --> 58:40.560 I think that was just bolted AAC um so yeah whatever they're doing I'm not exactly sure um but 58:41.360 --> 58:47.680 it's possible there might be a way to uh tip your balls into it at least to the apps before you 58:47.680 --> 58:54.240 start building your own server and stuff absolutely yeah so um I know open.ordio some of the content 58:54.240 --> 58:59.920 there is free to listen to um so anything on these in anything that is publicly visible to you 58:59.920 --> 59:06.560 you can listen to it just click play on something and it should start play um you can also log in 59:06.560 --> 59:12.800 if you want to test for example funcwell for android just pointed to a server that you know is sort of 59:12.800 --> 59:20.640 free and open and um basically just say anonymous authentication and you won't be able to do 59:20.640 --> 59:24.560 things like favouriting tracks you won't be able to build playlists or do anything like that but 59:24.560 --> 59:29.600 you will be able to put my idea to use it. I can just see what's Albert. Fantastic uh I'm a bit 59:29.600 --> 59:36.720 conscious of the time is there anything that we haven't covered that you want to talk about that 59:36.720 --> 59:43.920 in this um I mean I don't think so I mean we didn't really touch much on on podcast but it is an 59:43.920 --> 59:49.600 area of the app which has languished a little bit we're planning to pick up focus on it again at some 59:49.600 --> 59:58.080 point but obviously um on the fed of us cast the pod exists so um people who are looking for 59:58.080 --> 01:00:06.080 a more sort of beautiful um experience can always go and look cast the pod but funcwell is you know 01:00:06.080 --> 01:00:12.800 we were the first we we were doing podcasts back in the day before anyone else was and yet 01:00:12.800 --> 01:00:17.680 you can publish a podcast on funcwell and just download the RSS feed and listen to it wherever 01:00:17.680 --> 01:00:24.320 using your normal pod capture um so you know that was kind of a feature we baked into it. That's 01:00:24.320 --> 01:00:28.720 actually quite interesting for because we get asked a lot of it would start my own podcast and 01:00:29.440 --> 01:00:37.120 this might be a good solution for people. Okay yeah um fantastic I'm gonna I'm gonna have to 01:00:37.120 --> 01:00:42.880 wrap it up there here and I think um unless there's anything else. No no no I think so it's been 01:00:42.880 --> 01:00:47.280 a really nice talking to you. Thank you very much for having me on. No no problem I hope that with 01:00:47.280 --> 01:00:54.240 the feed we could have a we need to have a chat about this maybe um we can do a round up movie 01:00:54.240 --> 01:01:00.960 in a six months to a year again and um on back when I have a little bit more experience having 01:01:00.960 --> 01:01:08.400 used it or maybe installed it or um uh if you have new peakers or does anything else you want to 01:01:08.400 --> 01:01:15.120 announce. Yeah absolutely sure just uh just send me an email and I'm happy to come along. Perfect. 01:01:15.120 --> 01:01:20.560 Okay well thanks very much for the interview and the links as always to everything that we've 01:01:20.560 --> 01:01:26.560 discussed will be in the show notes of this episode. In tomorrow for another exciting episode 01:01:26.560 --> 01:01:30.400 of hacker, public radio. 01:01:30.400 --> 01:01:38.880 You have been listening to hacker public radio at hacker public radio.org. 01:01:38.880 --> 01:01:44.960 Today's show was contributed by a HBR this night like yourself if you ever thought of recording 01:01:44.960 --> 01:01:52.400 podcast and click on our contributally to find out how easy it means. Posting for HBR has been 01:01:52.400 --> 01:01:59.120 kindly provided by an onsthost.com the internet archive and our synced.net. 01:01:59.120 --> 01:02:04.080 On this otherwise status, today's show is released on our creative comments. 01:02:04.080 --> 01:02:19.920 Attribution for.o international license.